home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 January / Gamestar_69_2005-01_dvd.iso / Dema / mortyr2_demo.exe / {app} / effects / bump_water.fx < prev    next >
Encoding:
Text File  |  2004-09-08  |  3.7 KB  |  191 lines

  1.  
  2. vector lhtR;    // kierunek swiatla, dla zgodnosci (tu nie uzywam)
  3. vector lPos;    // pozycja swiatla (we wspolrzednych mesha!)
  4. vector vCPS;    // pozycja kamery (w swiecie)
  5. vector lCol;    // kolor swiatla odbicia (dla dot3s)
  6.  
  7. matrix mWld;    // World
  8. matrix mTot;    // Total
  9.  
  10. texture tDif;   // Tekstura glowna
  11. texture tDf3;   // Normal map
  12.  
  13. vector lAmb;    // kolor ambientu
  14.  
  15. vector sDir; // sky dir
  16. vector sCol; // sky col
  17.  
  18.  
  19.  
  20. technique tec0
  21.  
  22.  pass p0
  23.  {
  24.   ZBias=0;
  25.   AlphaBlendEnable = true;
  26.   SrcBlend = SrcAlpha;
  27.   DestBlend = InvSrcAlpha;
  28.  
  29.   Texture[0] = <tDif>;
  30.  
  31.   ColorOp[0] = SelectArg1;
  32.         
  33.   ColorArg1[0] = Texture;
  34.   ColorArg2[0] = Diffuse;
  35.  
  36.   AlphaOp[0]=SelectArg1;
  37. //  AlphaArg1[0] = Texture;
  38. //  AlphaArg2[0] = Disable;
  39.  
  40.   ColorOp[1]=Disable;
  41.   AlphaOp[1]=Disable;
  42.  
  43.   PixelShader  = NULL;
  44.   VertexShader = XYZ | Normal | Tex3;
  45.  }
  46.  
  47.  
  48.  pass p1
  49.  {
  50.   AlphaBlendEnable = true;
  51.   SrcBlend = One;
  52.   DestBlend = One;
  53.   BlendOp=Add;
  54.   ZBias=2;
  55.  
  56.  
  57.   VertexShaderConstant[0] = <mWld>;     // World Matrix
  58.   VertexShaderConstant[4] = <mTot>;    // World*View*Proj Matrix
  59.   VertexShaderConstant[9] = (1.0f, 1.0f, 1.0f, 1.0f);    // diffuse
  60.   VertexShaderConstant[10] = (1.0f, 1.0f, 1.0f, 1.0f);    // specular
  61.   VertexShaderConstant[16] = <sDir>;    // Light direction
  62.   VertexShaderConstant[17] = <sCol>;    // light color
  63.   VertexShaderConstant[18] = <lAmb>;
  64.   vertexShaderConstant[20] = (.5f,.5f,.5f,.5f);
  65.   VertexShaderConstant[21] = <lhtR>;    // sky dir
  66.   VertexShaderConstant[22] = <lCol>;    // sky col
  67. //  VertexShaderConstant[23] = <lPos>;    // light position
  68.   VertexShaderConstant[24] = <vCPS>;
  69.  
  70. //  Texture[0]   = <tDif>;
  71.   Texture[0]   = <tDf3>;
  72.  
  73.   VertexShader = 
  74.   decl
  75.   {
  76.    stream 0;
  77.    float v0[3]; //Position
  78.    float v3[3]; //Normal
  79.    float v7[2]; //Texture Coord1
  80.    float v8[2]; //Tangent
  81.    float v9[2]; //Tangent
  82.   }
  83.   asm
  84.   {
  85.     vs.1.1             // 
  86.     m4x4 oPos, v0, c4  // 
  87.     m4x4 r0,v0,c0      // 
  88.            
  89.     add r0,-r0,c24     // 
  90.  
  91.     // Normalize
  92.     dp3 r11.x,r0.xyz,r0.xyz   // 
  93.     rsq r11.xyz,r11.x         // 
  94.     mul r0.xyz,r0.xyz,r11.xyz // 
  95.  
  96.     add r2.xyz,r0.xyz,-c16    // 
  97.     
  98.     // Normalize
  99.     dp3 r11.x,r2.xyz,r2.xyz   // 
  100.     rsq r11.xyz,r11.x         // 
  101.     mul r2.xyz,r2.xyz,r11.xyz // 
  102.  
  103.     m3x3 r1,v3,c0             // 
  104.         
  105.     dp3  r3.xyzw,r1,r2
  106.  
  107.     // Now raise it several times
  108.     mul r3,r3,r3 //  2nd
  109.     mul r3,r3,r3 //  4th
  110.     mul r3,r3,r3 //  8th
  111.  
  112.         
  113.     // Compute diffuse term
  114.     dp3 r4,r1,-c16
  115.       
  116.     // Blend it in
  117. //    mul r3,c20,r3   // Kd
  118. //    mul r4,r4,c21   // Ks
  119.  
  120.     mul r4,r4,c10   // Specular
  121.     mad r4,r3,c9,r4 // Diffuse        
  122.      
  123.     mov oD0,r4      //
  124.  
  125.  
  126.  
  127.  
  128.    //
  129.    // wspolrzedne tekstur
  130.    //
  131.    mov oT0.xy,v7.xy
  132.    mov oT1.xy,v7.xy
  133.   };
  134.  
  135.   PixelShader = 
  136.   asm
  137.   {
  138.    ps.1.1
  139.    tex t0 // tekstura podstawowa
  140. //   tex t1 // normal map
  141.  
  142.    dp3 r0, t0_bx2, v0_bx2; // bump ze specularem
  143.    mul r1, r0, r0;
  144.    mul_d2 r0, r1, r1;
  145.  
  146. //   mul r1, r0, r0;
  147. //   mul r0, r1, r1;
  148. //   mov r0, r1
  149.  
  150. //   mul r1,r0,r0; // wyostrzyc
  151. //   mul r0,r1,r1;
  152. //   mul_d2 r1, r0, r0;
  153.  
  154. //   mov r0, r1
  155.  
  156. //   mul r0, r0, t0.a // i na maske! (tekstura z diffuse w 1 pasie)
  157.   };     
  158.  }
  159. }
  160.  
  161.  
  162.  
  163. technique tec1
  164.  
  165.  pass p0
  166.  {
  167.   ZBias=0;
  168.   AlphaBlendEnable = true;
  169.   SrcBlend = SrcAlpha;
  170.   DestBlend = InvSrcAlpha;
  171.  
  172.   Texture[0] = <tDif>;
  173.  
  174.   ColorOp[0] = SelectArg1;
  175.         
  176.   ColorArg1[0] = Texture;
  177.   ColorArg2[0] = Diffuse;
  178.  
  179.   AlphaOp[0]=SelectArg1;
  180. //  AlphaArg1[0] = Texture;
  181. //  AlphaArg2[0] = Disable;
  182.  
  183.   ColorOp[1]=Disable;
  184.   AlphaOp[1]=Disable;
  185.  
  186.   PixelShader  = NULL;
  187.   VertexShader = XYZ | Normal | Tex3;
  188.  }
  189. }